/***************************************************************************
 创建者：华磊
 开始时间：         : 2020.12.17
 copyright            : (C) 深圳市华友高科有限公司
 修改说明：（每次有修改就添加一条，带有 修改人，修改时间，修改描述）

 ***************************************************************************
 *   选择指令属性编辑视窗
*                                                                         *
 ***************************************************************************/
#ifndef SELECTINSTRUCTIONVIEW_H
#define SELECTINSTRUCTIONVIEW_H

#include "selectinstructionview_global.h"
#include <QWidget>
#include <QTranslator>

class ProgramView;

namespace Ui {
class SelectInstructionView;
}

/**
 * @brief The SelectInstructionView class　选择指令属性编辑视窗类
 */
class SELECTINSTRUCTIONVIEWSHARED_EXPORT SelectInstructionView : public QWidget
{
    Q_OBJECT

public:
    SelectInstructionView(int styleId,QWidget *parent = 0);

    /**
     * @brief updateView　更新设置数据到界面控件上
     */
    void updateView();

    /**
     * @brief getInput　获取界面输入
     */
    void getInput();

    void changeLanguage(int language);

    void initialDisplayStyle(int styleId);

private:
    QTranslator translator;

public:
    ProgramView *programView;

    /**
     * @brief selectInstruction　选择指令
     */
    QString selectInstruction;

    /**
     * @brief rIndex　寄存器号码
     */
    QString rIndex;
    /**
     * @brief rValue　寄存器值
     */
    QString rValue;
    /**
     * @brief dealWith　处理方式
     */
    QString dealWith;
    /**
     * @brief dealWithType　处理方式编号　0:JMP  1:CALL
     */
    int dealWithType;
    /**
     * @brief lblIndex　跳转标签号
     */
    QString lblIndex;
    /**
     * @brief callProgram　调用文件
     */
    QString callProgram;
    /**
     * @brief callLocation　调用路径
     */
    QString callLocation;
    /**
     * @brief note　指令注释
     */
    QString note;

signals:
    /**
     * @brief selectJmpDeal　选择JMP处理方式
     */
    void selectJmpDeal();
    /**
     * @brief selectCallDeal　选择CALL处理方式
     */
    void selectCallDeal();
    /**
     * @brief browseCallProgram　浏览调用文件
     * @param callLocation　浏览路径
     */
    void browseCallProgram(QString callLocation);

    /**
     * @brief clearNote　清除指令注释
     */
    void clearNote();
    /**
     * @brief finishEditInstruction　完成指令编辑
     */
    void finishEditInstruction();
    /**
     * @brief saveInstruction　保存编辑后的指令
     * @param selectInstruction　选择指令
     */
    void saveInstruction(QString selectInstruction);

private slots:
    /**
     * @brief on_JMP_radioButton_clicked　选择JMP处理方式槽函数
     */
    void on_JMP_radioButton_clicked();

    /**
     * @brief on_CALL_radioButton_clicked　选择CALL处理方式槽函数
     */
    void on_CALL_radioButton_clicked();

    /**
     * @brief on_browse_Btn_clicked　浏览调用文件槽函数
     */
    void on_browse_Btn_clicked();

    /**
     * @brief on_clearNote_Btn_clicked　清除注释槽函数
     */
    void on_clearNote_Btn_clicked();

    /**
     * @brief on_forward_Btn_clicked　上一页槽函数
     */
    void on_forward_Btn_clicked();

    /**
     * @brief on_save_Btn_clicked　保存指令槽函数
     */
    void on_save_Btn_clicked();

private:
    Ui::SelectInstructionView *ui;
};

#endif // SELECTINSTRUCTIONVIEW_H
